/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Controladores;
import Beans.Articulo;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.util.*;
import Beans.Cliente;
import Beans.Proveedor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
/**
 *
 * @author Usuario
 */
public class Marticulos {

    
    private  List<Articulo> listaarticulos = new LinkedList<Articulo>();
    File archivo=new File("Articulo.dat");
    Articulo a = new Articulo();

    public void grabar() throws IOException {

      FileOutputStream   flujoSalida  = new FileOutputStream(archivo);
      ObjectOutputStream objetoSalida = new ObjectOutputStream(flujoSalida);
      objetoSalida.writeObject(this.getListaarticulos());
      objetoSalida.close();
     }


    public void restaurar() throws IOException,ClassNotFoundException {
        if(archivo.exists()==true){
            FileInputStream flujoEntrada    = new FileInputStream(archivo);
            ObjectInputStream objetoEntrada = new ObjectInputStream(flujoEntrada);
            List<Articulo> art = (List) objetoEntrada.readObject();
            this.setListaarticulos(art);
            objetoEntrada.close();
        }
 	
    }

         public int Posicion(String nombre){
          Iterator itc=getListaarticulos().iterator();
          int pos=-1;
          int ind=-1;
         while(itc.hasNext()){
             a = (Articulo)itc.next();
            if(a.getNombre().equals(nombre)){
                ind=ind+1;
                 pos=ind;
            }else{
                ind=ind+1;
            }
         }
          return pos;
    }

       public int Posicion(int codigo){
          Iterator itc=getListaarticulos().iterator();
          int pos=-1;
          int ind=-1;
         while(itc.hasNext()){
             a = (Articulo)itc.next();
            if(a.getCodigo()==codigo){
                ind=ind+1;
                 pos=ind;

            }else{
                ind=ind+1;

            }
         }
          return pos;
    }


   public int GenerarCodigo(){
        int codigo= 0;
        int limite = 10000;
        Random r = new Random();
        codigo = r.nextInt(limite+1);
       return codigo;

    }

    public List<Articulo> getListaarticulos() {
        return listaarticulos;
    }

    public List<Articulo> buscar(String c){
            List<Articulo> l = new LinkedList<Articulo>();
        Iterator ita = listaarticulos.iterator();
        while(ita.hasNext()){
            Ar = (Articulo)ita.next();
            if(Ar.getNombre().startsWith(c)){
                l.add(Ar);
            }
         }
        return null;
    }

    public void setListaarticulos(List<Articulo> listaarticulos) {
        this.listaarticulos = listaarticulos;
    }
    Articulo Ar = new Articulo();
   public SimpleDateFormat formateador = new SimpleDateFormat("'' "
                + "' '  EEEEE 'de' MMMMMMMMMM   'del ' yyyy");


    public Boolean Existe(int cod){
        boolean encontrado=false;
        Iterator ita = listaarticulos.iterator();
        while(ita.hasNext()){
            Ar = (Articulo)ita.next();
            if(Ar.getCodigo()==cod){
                encontrado=true;
            }
         }
    return encontrado;
    } //verificacion existencia


    public void Registrar(Articulo art){
        if(!Existe(art.getCodigo())){            
            listaarticulos.add(art);
            JOptionPane.showMessageDialog(null,"Articulo registrado"
                                               + " satisfactoriamente");
        }else{
            JOptionPane.showMessageDialog(null,"El Articulo ya esta "
                                                + "registrado","Informacion",JOptionPane.ERROR_MESSAGE);
        }
        try {
            this.grabar();
        } catch (IOException ex) {
            Logger.getLogger(Marticulos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//Registra articulo

      
    public Articulo Consultar(int cod){
         Iterator ita = listaarticulos.iterator();
            while(ita.hasNext()){
               Ar = (Articulo)ita.next();
               if(Ar.getCodigo()==cod){
                   return Ar;
               }
        }
        return new Articulo();
    }//Consulta Articulo

   public Articulo ConsultarString(String nombre){
         Iterator ita = listaarticulos.iterator();
            while(ita.hasNext()){
               Ar = (Articulo)ita.next();
               if(Ar.getNombre().equals(nombre)){
                   return Ar;
               }
        }
        return new Articulo();
    }

   public void Eliminar(int cod){
        try{
             Iterator ita = listaarticulos.iterator();
             while(ita.hasNext()){
                 Ar= (Articulo)ita.next();
                 if(Ar.getCodigo()==cod){
                     listaarticulos.remove(Ar);
                    try {
                        this.grabar();
                    } catch (IOException ex) {
                        Logger.getLogger(Marticulos.class.getName()).log(Level.SEVERE, null, ex);
                    }
                     JOptionPane.showMessageDialog(null,"Eliminado satisfactoriamente");
                 }
             }
        }catch(ConcurrentModificationException e){
        }
    }

       public void Modificar(String nombre,Articulo art){
            int posicion = this.Posicion(nombre);
             getListaarticulos().set(posicion, art);
             JOptionPane.showMessageDialog(null,"Los datos se guardaron "
                                                     + "Satisfactoriamente");
            try {
                this.grabar();
            } catch (IOException ex) {
                Logger.getLogger(Mproveedor.class.getName()).log(Level.SEVERE, null, ex);
            }
       }

}
